/**
	********************************************************************************
	*
	*文件名称：
	*
	*文件日期：
	*
	*文件描述：
	*
	*文件版本：
	*
	*修改历史：
	*
	********************************************************************************
***/

/*******************************	头文件包含区	**********************************/
#include "main.h"

/******************************* 全局变量定义区 **********************************/

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
extern u8 led1RestartFlag ; //刚上电时触发渐变开关灯效果标志

int32_t main(void)
{
	sys_init();
	
	while (1)
	{
		if (systick.tim_ms) //10ms一次
		{
			systick.tim_ms = 0;
			com_rx_task();
			my_cmd_runing();	
			get_rtc_time();
			data_report(); 
			WDT->EN = 0xbb;
			led_state_check();
			scene_check();
			device_run_time();
			ota_check();
			get_sensor();
			lamp_state_ctrl();
			WDT->EN = 0xbb;
		}
	}
}


/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
void HardFault_Handler(void)
{
	while (1)
	{
		;//WDT->EN = 0xbb;
	}
}

void EXT6_HANDLER(void)
{
	if(INTC->STA & 0x40)
	{
		intt_cycle_add();
		INTC->STA = 0x40;
	}
}

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
void UART0_HANDLER(void)
{
	/* UART error irq */
	if ((UART0->CTRL & 0x8) && (UART0->STA & 0x3c))
	{
		UART0->STA |= 0x3C;
	}
	/* transmit data complete irq */
	else if ((UART0->CTRL & 0x2) && (UART0->STA & 0x2))
	{
		if (m_uart0.tx_len > 0)
		{
			m_uart0.tx_len--;
			UART0->TXD = *(m_uart0.tx_data++);
		}
		else
		{
			m_uart0.tx_ok = 1;
			m_uart0.send_cplt = 0;
		}
		UART0->STA |= 0x02;
	}
	else
	{
		/* Start adding user code. Do not edit comment generated here */
		pcUart.pc_rx_buf[m_uart0.rx_len] = UART0->RXD;
		m_uart0.rx_len++;
		if (m_uart0.rx_len >= PC_BUF_SIZE)
		{
			m_uart0.rx_len = PC_BUF_SIZE - 1;
		}
		m_uart0.timeOut = 0;
		UART0->STA |= 0x1;
	}
}

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
void UART1_HANDLER(void)
{
	/* receive data complete irq */
	if ((UART1->CTRL & 0x4) && (UART1->STA & 0x01))
	{
		/* Start adding user code. Do not edit comment generated here */
		if (m_uart1.rx_len >= BUF_SIZE)
		{
			mainUart.my_at_readbuf[BUF_SIZE - 1] = UART1->RXD;
			m_uart1.rx_len = BUF_SIZE - 1;
			m_uart1.timeOut = 0;
			return;
		}
		mainUart.my_at_readbuf[m_uart1.rx_len++] = UART1->RXD;
		m_uart1.timeOut = 0;
	}
	/* UART error irq */
	if ((UART1->CTRL & 0x8) && (UART1->STA & 0x3c))
	{
		UART1->STA |= 0x3C;
	}
	/* transmit data complete irq */
	else if ((UART0->CTRL & 0x2) && (UART1->STA & 0x2))
	{
		if (m_uart1.tx_len > 0)
		{
			m_uart1.tx_len--;
			UART1->TXD = *(m_uart1.tx_data++);
		}
		else
		{
			m_uart1.tx_ok = 1;
			m_uart1.send_cplt = 0;
		}
		UART1->STA |= 0x02;
	}
}

extern uartStruct m_uart2;

void UART2_HANDLER(void)
{
	/* UART error irq */
	if ((UART2->CTRL & 0x8) && (UART2->STA & 0x3c))
	{
		UART2->STA |= 0x3C;
	}
	/* transmit data complete irq */
	else if ((UART2->CTRL & 0x2) && (UART2->STA & 0x2))
	{
		if (m_uart2.tx_len > 0)
		{
			m_uart2.tx_len--;
			UART2->TXD = *(m_uart2.tx_data++);
		}
		else
		{
			m_uart2.tx_ok = 1;
			m_uart2.send_cplt = 0;
		}
		UART2->STA |= 0x02;
	}
	else
	{
		/* Start adding user code. Do not edit comment generated here */
		pcUart.bl0939_rx_buf[m_uart2.rx_len] = UART2->RXD;
		m_uart2.rx_len++;
		if (m_uart2.rx_len >= 80)
		{
			m_uart2.rx_len = 80 - 1;
		}
		m_uart2.timeOut = 0;
		UART2->STA |= 0x1;
	}
}

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
void TC0_HANDLER(void)
{
	TC0->STA |= 0x0F; //清中断标志位
					  //	tim_ms++;
}

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
void SysTick_Handler(void)
{
	systick.tim_ms++;
	systick.delay_10ms++;
	systick.time_out++;
}

/**
	*********************************************************************************
	*
	*函数名称：
	*
	*函数参数：无
	*
	*函数返回值：无
	*
	*功能描述：
	*
	*********************************************************************************
**/
